/*
 * Copyright 2004 original author or authors.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *    http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.jbfilter.jsp;

import java.util.Map;

import javax.servlet.ServletRequest;
import javax.servlet.http.HttpSession;
import javax.servlet.jsp.JspContext;
import javax.servlet.jsp.PageContext;
import javax.servlet.jsp.tagext.SimpleTagSupport;

/**
 * Adds additional support to the standard {@link SimpleTagSupport}.
 */
public class JbfilterSimpleTagSupport extends SimpleTagSupport {

	protected String getParameter(String name) {
		return getRequest().getParameter(name);
	}
	
	@SuppressWarnings("unchecked")
	protected Map<String, String[]> getParameterMap() {
		return getRequest().getParameterMap();
	}

	protected ServletRequest getRequest() {
		return getPageContext().getRequest();
	}
	
	protected PageContext getPageContext() {
		return (PageContext)getJspContext();
	}
	
	protected HttpSession getSession() {
		return getPageContext().getSession();
	}

	protected Object getFromSession(String key) {
		return getSession().getAttribute(key);
	}

	protected void storeInSession(String key, Object value) {
		getSession().setAttribute(key, value);
	}
	
	protected void setPageScopeAttribute(String key, Object value) {
		getJspContext().setAttribute(key, value);
	}
	protected void setAttribute(String key, Object value, Scope scope) {
		setAttribute(getJspContext(), key, value, scope);
	}
	public static  void setAttribute(JspContext context, String key, Object value, Scope scope) {
		context.setAttribute(key, value, scope.getPageContextCst());
	}
}
